package ig.metrica.ejb.conflujos;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 
 * @author usuario
 *
 * Is an Class for Configuracionflujosformulados table
 *
 */

public class ConfiguracionflujosformuladosPK implements java.io.Serializable {

	// -----------------------------------------------------------------
	// Attributes
	// -----------------------------------------------------------------

      private Integer id;
      private Integer idmodelo;
      private String producto;

	// -----------------------------------------------------------------
	// Constructors
	// -----------------------------------------------------------------

       public ConfiguracionflujosformuladosPK(  Integer id, Integer idmodelo, String producto )
       {
          this.id = id;
          this.idmodelo = idmodelo;
          this.producto = producto;
       }

	// -----------------------------------------------------------------
	// Methods get/set
	// -----------------------------------------------------------------
      /**
       * Return value for Id
       */
      public Integer getId ()
      {
         return this.id;
      }

      /**
       * Set value for  Id
       */
      public void setId ( Integer id )
      {
         this.id = id;
      }
      /**
       * Return value for Idmodelo
       */
      public Integer getIdmodelo ()
      {
         return this.idmodelo;
      }

      /**
       * Set value for  Idmodelo
       */
      public void setIdmodelo ( Integer idmodelo )
      {
         this.idmodelo = idmodelo;
      }
      /**
       * Return value for Producto
       */
      public String getProducto ()
      {
         return this.producto;
      }

      /**
       * Set value for  Producto
       */
      public void setProducto ( String producto )
      {
         this.producto = producto;
      }

	// -----------------------------------------------------------------
	// Method toString
	// -----------------------------------------------------------------
     /**
      *
      * Return toString for []
      *
      */
      @Override
      public String toString()
      {
         String _sep_=" ";
         return  id + _sep_ + idmodelo + _sep_ + producto + _sep_.trim();
      }


	// -----------------------------------------------------------------
	// Method equals
	// -----------------------------------------------------------------
    /**
     * Equals
     * @param o
     */
     public boolean equals(ConfiguracionflujosformuladosPK o)
     {

        if(o.getId()!=null && this.getId()==null )
            return false;

        if(o.getId()==null && this.getId()!=null )
            return false;

        if(!o.getId().equals(this.getId()))
            return false;

        if(o.getIdmodelo()!=null && this.getIdmodelo()==null )
            return false;

        if(o.getIdmodelo()==null && this.getIdmodelo()!=null )
            return false;

        if(!o.getIdmodelo().equals(this.getIdmodelo()))
            return false;

        if(o.getProducto()!=null && this.getProducto()==null )
            return false;

        if(o.getProducto()==null && this.getProducto()!=null )
            return false;

        if(!o.getProducto().equals(this.getProducto()))
            return false;

        return true;
     }

	// -----------------------------------------------------------------
	// Method copyFrom
	// -----------------------------------------------------------------
    /**
     * Cada uno de los atributos del objeto que llega lo copia en los atributos locales
     * @param o : el objeto fuente
     */
    public void copyFrom(Object o) {
        Object obj[] = new Object[0];
        Method methods[] = o.getClass().getMethods();
        for (int i = 0; i < methods.length; i++) {
            try {
                String methodName = methods[i].getName();
                if ((methodName.startsWith("get") || methodName.startsWith("is")) && Modifier.isPublic(methods[i].getModifiers()) && methods[i].getParameterTypes().length == 0 && !methodName.equals("getClass")) {
                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get") ? "get" : "is", "set");
                    getClass().getMethod(setMethodName, new Class[]{
                                methods[i].getReturnType()
                            }).invoke(this, new Object[]{
                                methods[i].invoke(o, obj)
                            });
                }
            } catch (IllegalAccessException ilE) {
                ilE.printStackTrace();
            } catch (InvocationTargetException invE) {
                invE.printStackTrace();
            } catch (NoSuchMethodException noE) {
            }
        }
    }

	// -----------------------------------------------------------------
	// Method copyTo
	// -----------------------------------------------------------------
    /**
     * Cada uno de los atributos locales los copia en los atributos del objeto que llega
     * @param o: objeto 
     */
    public void copyTo(Object o) {
        Object obj[] = new Object[0];
        Method methods[] = o.getClass().getMethods();
        for (int i = 0; i < methods.length; i++) {
            try {
                String methodName = methods[i].getName();
                if ((methodName.startsWith("get") || methodName.startsWith("is")) && Modifier.isPublic(methods[i].getModifiers()) && methods[i].getParameterTypes().length == 0 && !methodName.equals("getClass")) {
                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get") ? "get" : "is", "set");
                    o.getClass().getMethod(setMethodName, new Class[]{
                                methods[i].getReturnType()
                            }).invoke(o, new Object[]{
                                methods[i].invoke(this, obj)
                            });
                }
            } catch (IllegalAccessException ilE) {
                ilE.printStackTrace();
            } catch (InvocationTargetException invE) {
                invE.printStackTrace();
            } catch (NoSuchMethodException noE) {
            }
        }
    }
}
